package com.kai.mqtt.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.kai.mqtt.auth.entity.MqttAcl;
import com.kai.mqtt.data.PageResult;
import com.kai.mqtt.data.request.MqttAclRequest;
import com.kai.mqtt.data.request.MqttAclUpdateRequest;
import com.kai.mqtt.data.request.PageMqttAclRequest;
import com.kai.mqtt.data.response.MqttAclResponse;
import com.kai.mqtt.enums.AclActionEnum;

/**
 * @author weijk
 * @since 2024/8/18
 */
public interface IMqttAclService extends IService<MqttAcl> {

    /**
     * 创建 acl
     *
     * @param request 参数
     * @return 结果
     */
    Boolean createAcl(MqttAclRequest request);

    /**
     * 更新 acl
     *
     * @param request 参数
     * @return 结果
     */
    Boolean updateAcl(MqttAclUpdateRequest request);

    /**
     * 删除 acl
     *
     * @param id id
     * @return 结果
     */
    Boolean deleteAcl(Integer id);

    /**
     * 分页查询 acl 列表
     *
     * @param request 参数
     * @return acl 列表
     */
    PageResult<MqttAclResponse> pageAcl(PageMqttAclRequest request);

    /**
     * 校验 topic
     *
     * @param username 用户名
     * @param clientId 客户端 id
     * @param actionEnum 订阅或发布
     * @param topic    主题
     * @return true-成功，false-失败
     */
    Boolean checkValid(String username, String clientId, AclActionEnum actionEnum, String topic);
}
